8129cb4ea3cf2386f5de0a8a79b4e187f8cdc2f3,src/main/java/com/github/lindenb/jvarkit/tools/vcfviewgui/VcfStage.java,VcfStage,doMenuSaveAs,#,442
Before Change
{
try
{
binding=new SimpleBindings();
compiledScript =this.owner.javascriptEngine.compile(this.javascriptArea.getText());
binding.put("header", this.vcfFileReader.getFileHeader());
}
catch(final Exception err)
{
JfxNgs.showExceptionDialog(this, err);
return;
}
}
VariantContextWriter w=null;
CloseableIterator<VariantContext> iter=null;
try
{
final VariantContextWriterBuilder vcwb=new VariantContextWriterBuilder();
vcwb.setOutputFile(saveAs);
w= vcwb.build();
VCFHeader header2= new VCFHeader(this.vcfFileReader.getFileHeader());
final String filterName = this.javascriptFILTERfield.getText().trim();
if(!filterName.isEmpty())
{
header2.addMetaDataLine(new VCFFilterHeaderLine(filterName, "Set by User in JfxNgs"));
}
w.writeHeader(header2);
iter=this.vcfFileReader.iterator();
while(iter.hasNext())
{
VariantContext ctx=iter.next();
if(compiledScript!=null)
{
binding.put("variant", ctx);
if(!super.accept(compiledScript,binding))
{
if(filterName.isEmpty()) continue;
ctx=new VariantContextBuilder(ctx).filter(filterName).make();
}
}
w.add(ctx);
After Change
try
{
CompiledScript compiledScript =this.owner.javascriptEngine.compile(this.javascriptArea.getText());
javascriptFilter=new VcfJavascripFilter(
this.javascriptFILTERfield.getText().trim(),
this.vcfFileReader.getFileHeader(),
compiledScript);
}
catch(final Exception err)
{
JfxNgs.showExceptionDialog(this, err);
return;
}
}
VariantContextWriter w=null;
CloseableIterator<VariantContext> iter=null;
try
{
final VariantContextWriterBuilder vcwb=new VariantContextWriterBuilder();
vcwb.setOutputFile(saveAs);
w= vcwb.build();
final VCFHeader header2= new VCFHeader(this.vcfFileReader.getFileHeader());
if(!javascriptFilter.filter.isEmpty())
{
header2.addMetaDataLine(new VCFFilterHeaderLine(javascriptFilter.filter, "Set by User in JfxNgs:"+
this.javascriptArea.getText().replaceAll("[\n\t\r ]+"," ")
));
}
w.writeHeader(header2);
iter=this.vcfFileReader.iterator();
while(iter.hasNext())
{
VariantContext ctx=iter.next();
if(javascriptFilter!=null)
{
ctx = javascriptFilter.eval(ctx);
if(ctx==null) continue;
}
w.add(ctx);
}
w.close();